#ifndef FUQUOS_GDT_H
#define FUQUOS_GDT_H

#include<fuquOS/type.h>

#define SEL_KERN_CODE 0x8
#define SEL_KERN_DATA 0x10
// GDT描述符结构
struct gdt_entry{
    u16 limit_low; // 段界限低16位
    u16 base_low; // 基地址低16位
    u8 base_middle; // 基地址中8位
    u8 access; // 权限地址
    u8 granularity; // 段界限高4位和其他控制位
    u8 base_high; // 基地址高8位
} __attribute__((packed));

// GDT指针结构，指向GDT表
struct gdt_ptr{
    u16 limit; // GDT表大小
    u32 base; // GDT表基地址
} __attribute__((packed));

void gdt_set_gate(int num,u32 base,u32 limit,u8 access,u8 granularity);
void gdt_init();

#endif // FUQUOS_GDT_H
